<template>
  <!-- header部分 -->
    <header>
        <font-awesome-icon @click="router.go(-1)" :icon="['fas', 'angle-left']" style="color: white;font-size: 6vw;position: absolute;left: 0"/>
        <p>新增送货地址</p>
    </header>
  <!-- 表单部分 -->
    <ul class="form-box">
        <li>
            <div class="title">
                联系人：
            </div>
            <div class="content">
                <input type="text" v-model="deliveryAddress.contactName" placeholder="联系人
姓名">
            </div>
        </li>
        <li>
            <div class="title">
                性别：
            </div>
            <div class="content" style="font-size: 3vw;">
                <input type="radio" v-model="deliveryAddress.contactSex" value=1
                       style="width:6vw;height:3.2vw;">男
                <input type="radio" v-model="deliveryAddress.contactSex" value=0
                       style="width:6vw;height:3.2vw;">女
            </div>
        </li>
        <li>
            <div class="title">
                电话：
            </div>
            <div class="content">
                <input type="tel" v-model="deliveryAddress.contactTel" placeholder="电话">
            </div>
        </li>
        <li>
            <div class="title">
                收货地址：
            </div>
            <div class="content input-address">
                <div style="width: 100%;display: flex;align-items: center;justify-content: center">
                    <el-cascader size='small' :options='options' v-model='selectedOptions' @change='addressChange'></el-cascader>
                    <input style="width: 70%;" type="text" v-model="detailAddress" placeholder="详细地址">
                    <el-icon v-if="isLoading" class="is-loading">
                        <Loading />
                    </el-icon>
                    <button class="add-btn" v-else @click="getLocation()">获取</button>
                </div>

            </div>
        </li>
    </ul>
    <div class="button-add">
        <button @click="addUserAddress">保存</button>
    </div>
    <div id='container'></div>
</template>

<script setup>
import loadBMap from "../common.js";
import {ref,reactive,onMounted} from "vue";
import router from "../route/route.js";
import {saveDeliveryAddressAPI} from "../api/api.js";
import {getSessionStorage} from "../common.js";
const options = regionData
const selectedOptions = reactive([])
const isLoading = ref(false)
const city = ref("")
const detailAddress = ref("")

//初始化
let map;
let point;
let geoc;
let geolocation;
onMounted(()=>{
    map = new BMap.Map("container");
    //初始化北京维度
    point = new BMap.Point(116.331398, 39.897445);
    map.centerAndZoom(point, 12);
    geoc = new BMap.Geocoder();
    geolocation = new BMap.Geolocation();
})
const getLocation = ()=>{
    isLoading.value = true
    geolocation.getCurrentPosition(function(r) {
        if (this.getStatus() === BMAP_STATUS_SUCCESS) {
            let mk = new BMap.Marker(r.point);
            map.addOverlay(mk);
            map.panTo(r.point);
            console.log('您的位置：' + r.point.lng + ',' + r.point.lat);
            let pt = r.point;
            geoc.getLocation(pt, function(rs) {
                var addComp = rs.addressComponents;
                detailAddress.value = addComp.province +
                    addComp.city + addComp.district +
                    addComp.street + addComp.streetNumber
                isLoading.value = false
            });

        } else {
            console.log('failed' + this.getStatus());
        }
    }, { enableHighAccuracy: true })
}
import { regionData,CodeToText,TextToCode } from 'element-china-area-data'
const addressChange = (arr)=>{
    city.value = CodeToText[arr[0]]+CodeToText[arr[1]]+CodeToText[arr[2]]
}



const deliveryAddress = ref({
    contactName:"",
    contactSex:1,
    contactTel:"",
    userPhone:getSessionStorage("user").userPhone
})
const addUserAddress = ()=>{

        const deliveryAddressData = new FormData();
        deliveryAddressData.append("contactName",deliveryAddress.value.contactName)
        deliveryAddressData.append("contactSex",deliveryAddress.value.contactSex)
        deliveryAddressData.append("contactTel",deliveryAddress.value.contactTel)
        deliveryAddressData.append("address",city.value+detailAddress.value)
        deliveryAddressData.append("userPhone",deliveryAddress.value.userPhone)


        saveDeliveryAddressAPI(getSessionStorage("user").token,deliveryAddressData).then(res=> {
            router.go(-1)
            console.log(res.data.msg)
        })
}
</script>

<style scoped>
/*************** header ***************/
header {
    width: 100%;
    height: 12vw;
    background-color: #0097FF;
    display: flex;
    justify-content: space-around;
    align-items: center;
    color: #fff;
    font-size: 4.8vw;
    position: fixed;
    left: 0;
    top: 0;
    z-index: 1000;
}
/*************** （表单信息） ***************/
.add-btn {
    width: 30%;
    color: #666;
    font-size: 2.5vw;
    padding: 0;
    border: 1px solid #0097FF;
}
.form-box {
    width: 100%;
    margin-top: 12vw;
}
.form-box li {
    box-sizing: border-box;
    padding: 4vw 3vw 0vw 3vw;
    display: flex;
}
.form-box li .title {
    flex: 0 0 18vw;
    font-size: 3vw;
    font-weight: 700;
    color: #666;
}
.form-box li .content {
    flex: 1;
    display: flex;
    align-items: center;
}
.input-address{
    flex-direction: column;
}
.form-box li .content input {
    border: none;
    outline: none;
    width: 100%;
    height: 4vw;
    font-size: 3vw;
}
.button-add {
    box-sizing: border-box;
    padding: 4vw 3vw 0vw 3vw;
}
.button-add button {
    width: 100%;
    height: 10vw;
    font-size: 3.8vw;
    font-weight: 700;
    border: none;
    outline: none;
    border-radius: 4px;
    color: #fff;
    background-color: #38CA73;
}
</style>